package com.ruoyi.system.service.impl;

import java.util.List;

import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.system.domain.Doc;
import com.ruoyi.system.service.IDocService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.UnitMapper;
import com.ruoyi.system.domain.Unit;
import com.ruoyi.system.service.IUnitService;

import static com.ruoyi.common.utils.SecurityUtils.getUsername;

/**
 * 管理单位Service业务层处理
 * 
 * @author tq
 * @date 2025-04-19
 */
@Service
public class UnitServiceImpl implements IUnitService 
{
    @Autowired
    private UnitMapper unitMapper;
    @Autowired
    private IDocService docService;

    /**
     * 查询管理单位
     * 
     * @param unitId 管理单位主键
     * @return 管理单位
     */
    @Override
    public Unit selectUnitByUnitId(Long unitId)
    {
        return unitMapper.selectUnitByUnitId(unitId);
    }

    /**
     * 查询管理单位列表
     * 
     * @param unit 管理单位
     * @return 管理单位
     */
    @Override
    public List<Unit> selectUnitList(Unit unit)
    {
        return unitMapper.selectUnitList(unit);
    }

    /**
     * 新增管理单位
     * 
     * @param unit 管理单位
     * @return 结果
     */
    @Override
    public int insertUnit(Unit unit)
    {
        unit.setCreateTime(DateUtils.getNowDate());
        unit.setCreateBy(getUsername());
        return unitMapper.insertUnit(unit);
    }

    /**
     * 修改管理单位
     * 
     * @param unit 管理单位
     * @return 结果
     */
    @Override
    public int updateUnit(Unit unit)
    {
        unit.setUpdateTime(DateUtils.getNowDate());
        unit.setUpdateBy(getUsername());
        return unitMapper.updateUnit(unit);
    }

    /**
     * 批量删除管理单位
     * 
     * @param unitIds 需要删除的管理单位主键
     * @return 结果
     */
    @Override
    public AjaxResult deleteUnitByUnitIds(Long[] unitIds)
    {
        if(unitIds!=null&&unitIds.length>0){
            List<Doc> docs = docService.selectDocByUnitIds(unitIds);
            if(docs!=null&& !docs.isEmpty()){
                return AjaxResult.error("删除失败，存在文档关联单位");
            }
        }
        unitMapper.deleteUnitByUnitIds(unitIds);
        return AjaxResult.success("删除成功");
    }

    /**
     * 删除管理单位信息
     * 
     * @param unitId 管理单位主键
     * @return 结果
     */
    @Override
    public int deleteUnitByUnitId(Long unitId)
    {
        return unitMapper.deleteUnitByUnitId(unitId);
    }
}
